RESTful帶給Rails最大的好處是:它幫助我們用一種比較標準化的方式來命名跟組織Controllers和Actions。
因為 CRUD 是常見的操作行為,但是大家實作的方式、與網址設計方式不一樣。造成很多維護上的困擾。
於是將每個網址當做資源(Resource)來看待,對同一個資源做不同的動作(HTTP Verb)會得到不同的結果。符合 REST 概念設計的網址,又稱之 RESTFul Route。
將RESTful帶入Rails路由系統的點子,出自它對應了HTTP動詞POST、GET、PATCH/PUT、DELETE到資料的新增、讀取、更新、刪除等四項操作。
以下例子 做出 CRUD 功能的討論版來解釋:
討論版這個功能的名稱: groups。Restful 的概念裡面叫做 resources,「一組資源」。
為了要控制它的運作,我們會創建一個新的 Controller文件 叫做 groups_controller.rb
我們在config/routes.rb加入以下一行程式: resources :groups
Prefix Verb URI Pattern Controller#Action
groups GET /groups(.:format) groups#index
POST /groups(.:format) groups#create
new_group GET /groups/new(.:format) groups#new
edit_group GET /groups/:id/edit(.:format) groups#edit
group GET /groups/:id(.:format) groups#show
PATCH /groups/:id(.:format) groups#update
PUT /groups/:id(.:format) groups#update
DELETE /groups/:id(.:format) groups#destroy
Prefix指的是在View的Helper命名,搭配_path(相對網址,不帶有http://your_domain)或_url(絕對網址,帶有http://your_domain)結尾就可以組合出Helper方法,例如groups_path方法會產生出/groups這樣的網址。一般來說在網站的情境內都會使用相對網址,會用到絕對網址的情境則是在寄出去Email裡面的超連結。
對於網址跟對應的Action與頁面來說
/groups/ 一定就是 index,首頁,對應Routes路徑: groups_path
/groups/123 一定就是 show,名字為123的討論版個版頁面,對應Routes路徑: group_path(123)
/groups/123/edit 一定就是 edit,編輯討論版123的表單頁面,對應Routes路徑:edit_group_path(123)
/groups/new 一定就是 new,新增討論版的表單頁面,對應Routes路徑(或稱為helper):new_group_path 總結
參考資料
Rails實戰聖經
Rails102
為你自己學Ruby on Rails